package com.shanzmoo.db.order.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDate;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;

import lombok.*;

/**
 * <p>
 * 门店订单
 * </p>
 *
 * @author Gzhao
 * @since 2020-12-14
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@EqualsAndHashCode(callSuper = false)
@TableName("outlet_order")
public class OutletOrderEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自增id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 门店id
     */
    private Integer outletId;

    /**
     * 会员id
     */
    private Integer memberId;

    /**
     * 折扣
     */
    private BigDecimal discount;

    /**
     * 订单状态: 0-新开单，1-刷机中，2-待取货，3-已完结，4-已结算, 9-已作废
     */
    private Integer status;

    /**
     * 刷机订单
     */
    private Boolean root;

    /**
     * 是否月结
     */
    private Boolean monthly;

    /**
     * 支付状态: 0-未支付，1-已支付
     */
    private Boolean payStatus;

    /**
     * 支付单号
     */
    private String payNo;

    /**
     * 发货类型：0-自提，1-物流
     */
    private Integer deliveryType;

    /**
     * 预计完成时间
     */
    private LocalDate expectFinishDate;

    /**
     * 订单金额（单位元）
     */
    private BigDecimal amount;

    /**
     * 实收金额（单位元）
     */
    private BigDecimal receiveAmount;

    /**
     * 折扣金额（单位元）
     */
    private BigDecimal discountAmount;

    /**
     * 优惠
     */
    private BigDecimal abatement;

    /**
     * 优惠原因
     */
    private String abatementReason;

    /**
     * 备注
     */
    private String remark;

    /**
     * 作废原因
     */
    private String cancelReason;

    /**
     * 收件人
     */
    private String consignee;

    /**
     * 收件人手机
     */
    private String consigneeMobile;

    /**
     * 收件人所在省市区
     */
    private String consigneeDistrict;

    /**
     * 收件人详细地址
     */
    private String consigneeAddress;

    /**
     * 创建人
     */
    private Integer createUser;

    /**
     * 更新人
     */
    private Integer updateUser;

    /**
     * 创建时间（下单时间）
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 逻辑删除，0-未删除 1-已删除
     */
    private Boolean deleted;


}
